package com.tiankun.eurekausermsg.controller;

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.tiankun.eurekausermsg.exception.BusinessException;
import com.tiankun.eurekausermsg.pojo.User;
import com.tiankun.eurekausermsg.service.UserService;
import com.tiankun.eurekausermsg.util.JsonResult;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @Author 杨天可
 * @Date 2020/10/21 10:06
 * @Version 1.0
 */
@RestController
@RequestMapping("/sms")
public class SmsController {
    @Resource
    UserService userService;
    @Resource
    RedisTemplate<String, Object> redisTemplate;

    @RequestMapping("/send")
    public Map send(@RequestParam(value = "phone", required = false) String phone) throws IOException {

        System.out.println("从前端拿到的电话："+phone);

        JsonResult jsonResult = new JsonResult();
        //-----------------------用于测试
        jsonResult.setCode("1");
        jsonResult.setMsg("验证码发送成功");
        // 将数据保存在redis服务器上, 15分钟有效
        ValueOperations<String, Object> operations = redisTemplate.opsForValue();
        operations.set(phone, "8888", 15, TimeUnit.MINUTES);
        return jsonResult.getValues();
//---------------------

//        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI4G3ppx88ZCeZck1N2Z24", "TPfCzao1FUL2x1hnBIpcDTmgxf5sTq");
//        IAcsClient client = new DefaultAcsClient(profile);
//
//        CommonRequest request = new CommonRequest();
//        request.setSysMethod(MethodType.POST);
//        request.setSysDomain("dysmsapi.aliyuncs.com");
//        request.setSysVersion("2017-05-25");
//        request.setSysAction("SendSms");
//        request.putQueryParameter("RegionId", "cn-hangzhou");
//        request.putQueryParameter("PhoneNumbers", phone);
//        request.putQueryParameter("SignName", "天堃商城");
//        request.putQueryParameter("TemplateCode", "SMS_204976112");
//
//        //生成4位随机数验证码(1-9)
//        String code = "";
//        for (int i = 0; i < 4; i++) {
//            code += (int) (Math.random() * 9 + 1);
//        }
//        // 给阿里云短信模板中的${code}赋值，json格式
//        request.putQueryParameter("TemplateParam", "{'code':" + code + "}");
//        try {
//            CommonResponse response = client.getCommonResponse(request);
//            // 获取的验证码数据,
//            String data = response.getData();
//            //{"Message":"OK","RequestId":"CBC83055-A113-483A-91B2-0E4C56CCC643","BizId":"790710603115763709^0","Code":"OK"}
//
//            ObjectMapper mapper = new ObjectMapper();
//            Map<String, Object> tmpMap = mapper.readValue(data, Map.class);
//            if ("OK".equals(tmpMap.get("Code"))) {
//                jsonResult.setCode("1");
//                jsonResult.setMsg("验证码发送成功");
//
//                // 将数据保存在redis服务器上
//                ValueOperations<String, Object> operations = redisTemplate.opsForValue();
//                // 设置生存时间, 15分钟有效
//                operations.set(phone, code, 15, TimeUnit.MINUTES);
//
//            } else {
//                jsonResult.setCode("0");
//                jsonResult.setMsg("验证码发送失败,请检查手机号或稍后再试");
//            }
//
//
//        } catch (ServerException e) {
//            e.printStackTrace();
//        } catch (ClientException e) {
//            e.printStackTrace();
//        } catch (JsonMappingException e) {
//            e.printStackTrace();
//        } catch (JsonProcessingException e) {
//            e.printStackTrace();
//        }
//        return jsonResult.getValues();
    }

}
